Composite applications that run in a federated environment advantageously need to be mapped to the resources available at different sites. A composite application includes one or more components that work together to provide a service. As such, composite applications 1 to N should advantageously be mapped to heterogeneous server clusters 1 to M. Additionally, clusters can connect to a federation. However, clusters cannot share the details of their resources, as they belong to different administrative domains.
Minimum information sharing also helps to scale up provisioning logic. Additionally, applications should advantageously be placed on the clusters using a federated provisioning module. Applications can specify one or more requirements such as, for example, performance targets (for example, less than 10 milli-second response time), availability targets (for example, 99.9% up-time, mean time to recovery (MTTR), mean time between failures (MTBF)), and required resource capacity (such as, for example, central processing unit (CPU), memory size, etc.).
Clusters cannot be requested to declare any information that reveals actual resources held by them. As such, a provisioning problem exists in computing the number of replicas for each application component and a target server cluster for each replica to satisfy application requirements and/or minimize the cost of application hosting. Additionally, the objective specified by the Federated Service Provider should also advantageously be met (for example, load balance, and all clusters operating at a load factor such that the total cost of running the clusters as determined by cost-load curves for each site is minimized).
In existing approaches, composite application placement is not addressed, nor is there joint optimization of system and client objectives. Also, existing approaches do not apply to multi-component services on a federated domain, and do not address resource information hiding or availability requirements.